const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

const rpx2px = (rpx) => {
  var systemInfo = wx.getSystemInfoSync();
  let px = rpx / 750 * systemInfo.windowWidth
  return px
}

const strEncode = (str) => {
  let uuidFn = () => {
    return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
      var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
      return v.toString(32);
    });
  }
  /*
    登录加密规则
    总长度：28-38位
    例子： 

    原始密码：123456
    10132023Xx123xxxxxxx456xxxxxx

    这里吧密码截取位2段

    解释  （第一段密码）10 代表 从10位开始 
    （第一段密码）13 代表 从13位结束

    （第二段密码）20 代表 从10位开始 
    （第二段密码）23 代表 从13位结束

    x代表随机数，这里是前台自动生产 可以是字母或者数字不可以是特殊字符
    特殊说明，X的位数是随机改变的，不是固定长度 这也是为什么要 开始8位数字的原因
    */
  if(!str) return '';
  let splitIndex = parseInt(Math.random()* (str.length / 2)) + 1;
  let strArr = [str.substr(0,splitIndex), str.substr(splitIndex)]
  let r1length = parseInt(Math.random() * 10)
  let s1 =  r1length + 10;
  r1length += 2;
  let e1 = s1 + strArr[0].length;
  let r2length = parseInt(Math.random() * 10)
  let s2 = r2length + e1;
  let e2 = s2 + strArr[1].length;
  let uuid = uuidFn();
  let r1 = uuid.substr(Math.random()*10, r1length);
  let r2 = uuid.substr(Math.random()*10, r2length);
  let tmpStr = `${s1}${e1}${s2}${e2}${r1}${strArr[0]}${r2}${strArr[1]}`;
  let r3length = 38 - tmpStr.length;
  let r3 = uuid.substr(Math.random()*10, r3length);
  return `${tmpStr}${r3}`;
}

const isIdCode = (idCode) => {
  return /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|30|31)|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}([0-9]|x|X)$/.test(idCode)
}
module.exports = {
  formatTime: formatTime,
  rpx2px,
  strEncode,
  isIdCode
}
